<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Pro Git - 简体中文版
</title>
    <meta content="http://www.w3.org/1999/xhtml; charset=utf-8" http-equiv="Content-Type"/>
    <link href="stylesheet.css" type="text/css" rel="stylesheet"/>
    <style type="text/css">
		@page { margin-bottom: 5.000000pt; margin-top: 5.000000pt; }</style>
  </head>
  <body class="calibre">
<h2 id="calibre_toc_37" class="calibre3">网页界面 GitWeb</h2>

<p class="calibre2">如今我们的项目已经有了读写和只读的连接方式，也许应该再架设一个简单的网页界面使其更加可视化。为此，Git 自带了一个叫做 GitWeb 的 CGI 脚本。你可以在类似 <code class="calibre9">http://git.kernel.org</code> 这样的站点找到 GitWeb 的应用实例（见图 4-1）。</p>

<p class="calibre2"><img src="18333fig0401-tn.png" alt="Figure 4-1. 基于网页的 GitWeb 用户界面" title="Figure 4-1. 基于网页的 GitWeb 用户界面" class="calibre5"/></p>

<p class="calibre2">如果想知道项目的 GitWeb 长什么样，Git 自带了一个命令，可以在类似 <code class="calibre9">lighttpd</code> 或 <code class="calibre9">webrick</code> 这样轻量级的服务器程序上打开一个临时的实例。在 Linux 主机上通常都安装了 <code class="calibre9">lighttpd</code> ，这时就可以在项目目录里输入 <code class="calibre9">git instaweb</code> 来运行它。如果使用的是 Mac ，Leopard 预装了 Ruby，所以 <code class="calibre9">webrick</code> 应该是最好的选择。使用 lighttpd 以外的程序来启用 <code class="calibre9">git instaweb</code>， 可以通过它的 <code class="calibre9">--httpd</code> 选项来实现。</p>

<pre class="calibre8"><code class="calibre9">$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]
</code></pre>

<p class="calibre2">这会在 1234 端口开启一个 HTTPD 服务，随之在浏览器中显示该页。简单的很。需要关闭服务的时候，只要使用相同命令的 <code class="calibre9">--stop</code> 选项就好了：</p>

<pre class="calibre8"><code class="calibre9">$ git instaweb --httpd=webrick --stop
</code></pre>

<p class="calibre2">如果需要为团队或者某个开源项目长期的运行 web 界面，那么 CGI 脚本就要由正常的网页服务来运行。一些 Linux 发行版可以通过 <code class="calibre9">apt</code> 或 <code class="calibre9">yum</code> 安装一个叫做 <code class="calibre9">gitweb</code> 的软件包，不妨首先尝试一下。我们将快速的介绍一下手动安装 GitWeb 的流程。首先，你需要 Git 的源码，其中带有 GitWeb，并能生成 CGI 脚本：</p>

<pre class="calibre8"><code class="calibre9">$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/opt/git" \
        prefix=/usr gitweb/gitweb.cgi
$ sudo cp -Rf gitweb /var/www/
</code></pre>

<p class="calibre2">注意通过指定 <code class="calibre9">GITWEB_PROJECTROOT</code> 变量告诉编译命令 Git 仓库的位置。然后，让 Apache 来提供脚本的 CGI，为此添加一个 VirtualHost：</p>

<pre class="calibre8"><code class="calibre9">&lt;VirtualHost *:80&gt;
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    &lt;Directory /var/www/gitweb&gt;
        Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>

<p class="calibre2">不难想象，GitWeb 可以使用任何兼容 CGI 的网页服务来运行；如果偏向使用其他的（译注：这里指Apache 以外的服务），配置也不会很麻烦。现在，通过 <code class="calibre9">http://gitserver</code> 就可以在线访问仓库了，在 <code class="calibre9">http://git.server</code> 上还可以通过 HTTP 克隆和获取仓库的内容。
Again, GitWeb can be served with any CGI capable web server; if you prefer to use something else, it shouldn’t be difficult to set up. At this point, you should be able to visit <code class="calibre9">http://gitserver/</code> to view your repositories online, and you can use <code class="calibre9">http://git.gitserver</code> to clone and fetch your repositories over HTTP.</p>

</body>
</html>
